package com.bd.module.salegood.pojo;

import javax.swing.table.AbstractTableModel;

import java.util.*;
/**
 * 这个类作为JTable的数据模型
 *
 */
public class GoodsDataModel extends AbstractTableModel{
	/**
	 * 
	 */
	private static final long serialVersionUID = 9050891594593570331L;
	private static Vector vect = new Vector();
	/* 
	 * 此方法用来返回JTable的数据行数
	 */
	public int getRowCount() {
		int rowCount = vect.size();
		return rowCount;
	}
	/* 
	 * 此方法用来返回JTable的列数
	 */
	public int getColumnCount() {
		return Goods.COLUMN_NAMES.length;
	}
	/* 
	 * 此方法用来返回JTable每个单元格的数值对象
	 */
	public Object getValueAt(int rowIndex, int columnIndex) {
		Vector goodsVect = (Vector)vect.elementAt(rowIndex);
		return (Object)goodsVect.elementAt(columnIndex);
	}//返回列名
	public String getColumnName(int column){
		return Goods.COLUMN_NAMES[column];
	}
	//向数据模型中添加数据项
	public void setInformation(Vector v){
			vect.addElement(v);
		}
	public int check(String goodsCode){
		Goods goods = new Goods(); //更改后的Goods对象将存放在这里
		int row=vect.size();
		Vector vGoods = new Vector();
		for(int i=0;i<row;i++){
			vGoods = (Vector)vect.elementAt(i);
			goods.setVector(vGoods);//把当前的商品Vector转化为Goods对象
			if(goods.getGoodsCode().equals(goodsCode)){
				goods.setGoodsNum(goods.getGoodsNum()+1);
				goods.setMoney();//更改商品数量和钱数
				vect.setElementAt(goods.getVector(),i);//更改table的数据模型
				return 0;	
			}	
		}
		return 1;	
	}
	public String getGoodsName(){
		Goods goods = new Goods(); //更改后的Goods对象将存放在这里
		int rowCount = vect.size();
		Vector vGoods = new Vector();
		vGoods = (Vector)vect.elementAt(rowCount - 1);//获取当前正在操作的商品的Vector表示
		goods.setVector(vGoods);//把当前的商品Vector转化为Goods对象
		return goods.getGoodsName();
	}
	/**
	 * 此方法将修改当前正在操作的商品的数量
	 * @param goodsNum
	 */
	public void setGoodsNumber(int goodsNum){
		Goods goods = new Goods(); //更改后的Goods对象将存放在这里
		int rowCount = vect.size();
		Vector vGoods = new Vector();
		vGoods = (Vector)vect.elementAt(rowCount - 1);//获取当前正在操作的商品的Vector表示
		goods.setVector(vGoods);//把当前的商品Vector转化为Goods对象
		goods.setGoodsNum(goodsNum);
		goods.setMoney();//更改商品数量和钱数
		vect.setElementAt(goods.getVector(),rowCount - 1);//更改table的数据模型
	}
	/**
	 * 此方法将返回当前商品的总数量
	 * @return
	 */
	public static int getGoodsNumbers(){
		int rowCount = vect.size();
		if(rowCount == -1){
			return 0;
		}
		else{
			int count = 0;
			for(int i = 0;i < rowCount;i++){
				Goods goods = new Goods();
				Vector vGoods = new Vector();
				vGoods = (Vector)vect.elementAt(i);
				goods.setVector(vGoods);
				count += goods.getGoodsNum();
			}
			return count;
		}
	}
	/**
	 * 此方法将返回当前商品的总钱数
	 * @return
	 */
	public static double getGoodsMoneys(){
		int rowCount = vect.size();
		if(rowCount == -1){
			return 0;
		}
		else{
			double moneys = 0;
			for(int i = 0;i < rowCount;i++){
				Goods goods = new Goods();
				Vector vGoods = new Vector();
				vGoods = (Vector)vect.elementAt(i);
				goods.setVector(vGoods);
				moneys += goods.getMoney();
			}
			return moneys;
		}
	}
	/**
	 * 此方法将清除当前交易信息，等待下次交易
	 */
	public static void clearVector(){
		vect.clear();
	}
	/**
	 * 此方法将清除当前交易选中的商品信息
	 */
	public static void removeLastVector(int selectRow){
		vect.remove(selectRow);
	}
	/**
	 * 返回当前的vect值
	 * @return vect
	 */
	public static Vector getNowVector(){
		return vect;
	}
	
	public static void setNowVector(Vector v){
		vect = v;
	}
	
	public static boolean checkVector(){
		if(vect.isEmpty()){
			return true;
		}
		return false;
	}
}
